package com.example.zqr.singlemapper;

import com.example.zqr.pojo.Product;
import com.example.zqr.pojo.ProductExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface ProductMapper {
    /**
     * 根据Example条件计算Product表中的记录数。
     *
     * @param example 查询条件的封装。
     * @return 满足条件的记录数量。
     */
    int countByExample(ProductExample example);
    /**
     * 根据Example条件删除Product表中的记录。
     *
     * @param example 查询条件的封装。
     * @return 被删除的记录数量。
     */
    int deleteByExample(ProductExample example);
    /**
     * 根据主键删除Product表中的记录。
     *
     * @param proid Product表的主键值。
     * @return 被删除的记录数量。
     */
    int deleteByPrimaryKey(String proid);
    /**
     * 插入一个新的Product记录。
     *
     * @param record 要插入的Product记录。
     * @return 影响的记录数量。
     */
    int insert(Product record);
    /**
     * 选择性地插入一个新的Product记录，只插入非空字段。
     *
     * @param record 要插入的Product记录。
     * @return 影响的记录数量。
     */
    int insertSelective(Product record);
    /**
     * 根据Example条件查询Product表中的记录，包括BLOB字段。
     *
     * @param example 查询条件的封装。
     * @return 满足条件的Product记录列表，包括BLOB字段。
     */
    List<Product> selectByExampleWithBLOBs(ProductExample example);
    /**
     * 根据Example条件查询Product表中的记录。
     *
     * @param example 查询条件的封装。
     * @return 满足条件的Product记录列表。
     */
    List<Product> selectByExample(ProductExample example);
    /**
     * 根据主键查询Product表中的记录。
     *
     * @param proid Product表的主键值。
     * @return 对应主键的Product记录。
     */
    Product selectByPrimaryKey(String proid);
    /**
     * 根据Example条件选择性地更新Product表中的记录。
     *
     * @param record 要更新的Product记录，只有非空字段会被更新。
     * @param example 查询条件的封装。
     * @return 影响的记录数量。
     */
    int updateByExampleSelective(@Param("record") Product record, @Param("example") ProductExample example);
    /**
     * 根据Example条件更新Product表中的记录，包括BLOB字段。
     *
     * @param record 要更新的Product记录。
     * @param example 查询条件的封装。
     * @return 影响的记录数量。
     */
    int updateByExampleWithBLOBs(@Param("record") Product record, @Param("example") ProductExample example);
    /**
     * 根据Example条件更新Product表中的记录。
     *
     * @param record 要更新的Product记录。
     * @param example 查询条件的封装。
     * @return 影响的记录数量。
     */
    int updateByExample(@Param("record") Product record, @Param("example") ProductExample example);
    /**
     * 选择性地根据主键更新Product表中的记录，只更新非空字段。
     *
     * @param record 要更新的Product记录。
     * @return 影响的记录数量。
     */
    int updateByPrimaryKeySelective(Product record);
    /**
     * 根据主键更新Product表中的记录，包括BLOB字段。
     *
     * @param record 要更新的Product记录。
     * @return 影响的记录数量。
     */
    int updateByPrimaryKeyWithBLOBs(Product record);
    /**
     * 根据主键更新Product表中的记录。
     *
     * @param record 要更新的Product记录。
     * @return 影响的记录数量。
     */
    int updateByPrimaryKey(Product record);
}